/* ----------------------------------------------------------------------------
* File: module_talk.h
*
* Desc: Talk module interface
*
* Created: 21/05/2011, by Alexey Korshunov
* ---------------------------------------------------------------------------- */
#ifndef _MODULE_TALK_H_
#define _MODULE_TALK_H_

#include "module.h"
#include "message_queue.h"
#include <memory>


namespace ModuleManagement
{
	class TalkModule : public Module
	{
	public:
		virtual ~TalkModule(){}

		virtual Common::Error Start() = 0;
		virtual Common::Error Stop() = 0;
	};
}

namespace ModuleManagement
{
	typedef struct TalkModuleParams
	{
		TalkModuleParams() : in_queue(NULL), out_queue(NULL) { }
		Common::MessageQueue* in_queue;
		Common::MessageQueue* out_queue;
	}TalkModuleParams;

	std::auto_ptr<TalkModule> CreateTalkModule(const TalkModuleParams& params);
}

#endif // _MODULE_TALK_H_